package main

import (
	"fmt"
	"net"

	"gitee.com/wang-xiangyu20000112/vblog/apps/user/database"
	"gitee.com/wang-xiangyu20000112/vblog/config"
	"gitee.com/wang-xiangyu20000112/vblog/logger"
	"gitee.com/wang-xiangyu20000112/vblog/nacos"
	"gitee.com/wang-xiangyu20000112/vblog/router"
	"github.com/gin-contrib/cors"
	"github.com/gin-gonic/gin"
)

var err error

func main() {

	// 加载配置文件对默认配置进行覆盖
	config.GetConfig()
	fmt.Println(config.GlobalConfig)

	// 加载全局数据库连接
	database.GetMysqlConnection()

	// 初始化全局zap日志
	err = logger.InitZapLogger()
	if err != nil {
		panic(err)
	}
	// 结束程序时调用defer同步日志记录
	defer logger.CloseLogger()

	// 启动后将服务注册到nacos
	nacos.InitNacosConfig()

	// 创建一个新的 Gin 引擎实例
	// 使用New创建 初始化是不添加任何中间件 方便后面自定义中间件
	r := gin.New()
	r.Use(gin.Recovery())
	// 自定义跨域中间件配置
	r.Use(cors.Default())
	// 自定义日志中间件
	r.Use(logger.GinZapLogger())
	// 使用路由配置
	router.AppsRouter(r)
	// 启动实例
	// 使用net.JoinHostPort函数将地址和端口拼接成完整的网络地址
	err = r.Run(net.JoinHostPort(config.GlobalConfig.Server.IpAddr,
		config.GlobalConfig.Server.Port))
	if err != nil {
		panic(err)
	}
}
